const fs = require('fs')

const start = Date.now()
setTimeout(function f1() {
    console.log('setTimeout', Date.now() - start)
}, 200)

fs.readFile('./index.js', 'utf-8', (err, data) => {

    // 一段执行300毫秒的代码
    const start = Date.now()
    while (Date.now() - start < 300) { }

    console.log('readFile', Date.now() - start)
})

// 开始执行

// 检查是否要进入事件循环 要 （定时器, 文件读取）

// 进入 timers 队列, 是否有回调函数, 没有 进入poll队列

// poll队列 是否有回调, 没有, 有要等待的东西, 等待其他队列中出现回调, 或自己出现回调, 一直等待

// 文件读取完成, 添加回调到 poll队列, 执行回调 

// 在执行回调的过程中, 定时器时间到了, 添加回调到 timers 队列, 

// 输出: readFile 300 回调执行结束 进入下一队列 check

// check队列 是否有回调, 没有, 结束

// 检查是否要进入事件循环 要 （定时器）

// 进入 timers 队列, 是否有回调函数, 有 执行回调

// 输出: 307 执行完成 进入poll队列

// poll队列 是否有回调, 没有, 没有有要等待的东西, 进入下一队列 check

// check队列 是否有回调, 没有, 结束

// 检查是否要进入事件循环 不要

// 结束

